ãŠã§ããµã€ãã®èªã¿èŸŒã¿é床ãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã®ã¯ãªãã£ã«ã«ã¬ã³ããªã³ã°ãã¹ã®çè§£ãšæé©åã«é¢ããå æ¬çãªã¬ã€ããã°ããŒãã«ãªããã³ããšã³ãããã©ãŒãã³ã¹æ¹åã®ããã®å®è·µçãªãã¯ããã¯ãåŠã³ãŸãããã
JavaScript ããã©ãŒãã³ã¹æé©åïŒã¯ãªãã£ã«ã«ã¬ã³ããªã³ã°ãã¹ã®ãã¹ã¿ãŒ
仿¥ã®ãŠã§ãã«ãããŠãããã©ãŒãã³ã¹ã¯æéèŠã§ããèªã¿èŸŒã¿ã®é ããŠã§ããµã€ãã¯ããŠãŒã¶ãŒãã€ã©ã€ã©ãããé¢è±çãé«ããæçµçã«ã¯åçã®æå€±ã«ã€ãªãããŸããJavaScript ã®æé©åãšããã©ãŠã¶ããŠã§ãããŒãžãã©ã®ããã«ã¬ã³ããªã³ã°ããããçè§£ããããšã¯ãè¿ éã§é åçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«äžå¯æ¬ ã§ãããã®åéã§æãéèŠãªæŠå¿µã®1ã€ããã¯ãªãã£ã«ã«ã¬ã³ããªã³ã°ãã¹ (CRP) ã§ãã
ã¯ãªãã£ã«ã«ã¬ã³ããªã³ã°ãã¹ãšã¯ïŒ
ã¯ãªãã£ã«ã«ã¬ã³ããªã³ã°ãã¹ãšã¯ããã©ãŠã¶ã HTMLãCSSãJavaScript ãç»é¢äžã®ã¬ã³ããªã³ã°ããããŠã§ãããŒãžã«å€æããããã«å®è¡ããäžé£ã®ã¹ãããã§ããããã¯äŸåé¢ä¿ã®é£éã§ãããåã¹ãããã¯åã®ã¹ãããã®åºåã«äŸåããŸãããã®ãã¹ãçè§£ããæé©åããããšã¯ããŠãŒã¶ãŒããŠã§ããµã€ããèŠèŠçã«ç¢ºèªããæäœã§ããããã«ãªããŸã§ã®æéãççž®ããããã«éèŠã§ããããã¯ãæçµçãªããã©ãŒãã³ã¹ãå®ç§ã«ãªãããã«ãååãïŒåã¬ã³ããªã³ã°ã¹ãããïŒãå®ç§ã«ã¿ã€ãã³ã°ãåãããŠå®è¡ãããå¿ èŠããããæ éã«ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ããããã¬ãšã®ãããªãã®ã ãšèããŠãã ããã1ã€ã®ã¹ãããã§ã®é å»¶ã¯ãåŸç¶ã®ãã¹ãŠã®ã¹ãããã«åœ±é¿ããŸãã
CRP ã¯ã以äžã®äž»èŠãªã¹ãããã§æ§æãããŸãã
- DOM æ§ç¯ïŒ HTML ãè§£æããDocument Object Model (DOM) ãæ§ç¯ããŸãã
- CSSOM æ§ç¯ïŒ CSS ãè§£æããCSS Object Model (CSSOM) ãæ§ç¯ããŸãã
- ã¬ã³ããŒããªãŒæ§ç¯ïŒ DOM ãš CSSOM ãçµã¿åãããŠã¬ã³ããŒããªãŒãäœæããŸãã
- ã¬ã€ã¢ãŠãïŒ ã¬ã³ããŒããªãŒå ã®åèŠçŽ ã®äœçœ®ãšãµã€ãºãèšç®ããŸãã
- ãã€ã³ãïŒ ã¬ã³ããŒããªãŒãç»é¢äžã®å®éã®ãã¯ã»ã«ã«å€æããŸãã
ãããã®åã¹ããããããã«è©³ããèŠãŠãããŸãããã
1. DOM æ§ç¯
ãã©ãŠã¶ã HTML ããã¥ã¡ã³ããåä¿¡ãããšãã³ãŒããäžè¡ãã€è§£æãå§ããŸããè§£æããã«ã€ããŠãDocument Object Model (DOM) ãšåŒã°ããããªãŒæ§é ãæ§ç¯ããŸããDOM 㯠HTML ããã¥ã¡ã³ãã®æ§é ã衚ããå HTML èŠçŽ ãããªãŒå ã®ããŒãã«ãªããŸãã以äžã®ç°¡å㪠HTML ãèããŠã¿ãŸãããã
<!DOCTYPE html>
<html>
<head>
<title>ç§ã®ãŠã§ããµã€ã</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>ããã«ã¡ã¯ãäžçïŒ</h1>
<p>ããã¯ç§ã®æåã®ãŠã§ããµã€ãã§ãã</p>
</body>
</html>
ãã©ãŠã¶ã¯ãã® HTML ã DOM ããªãŒã«è§£æããåã¿ã°ïŒ<html>ã<head>ã<body> ãªã©ïŒãããŒãã«ãªããŸãã
ã¯ãªãã£ã«ã«ããããã³ã°ãªãœãŒã¹ïŒ ããŒãµãŒã <script> ã¿ã°ã«ééãããšãéåžžãã¹ã¯ãªããã®ããŠã³ããŒããè§£æãå®è¡ãå®äºãããŸã§ DOM æ§ç¯ããããã¯ããŸããããã¯ãJavaScript ã DOM ã倿Žã§ããããããã©ãŠã¶ã¯ DOM ã®æ§ç¯ãç¶ããåã«ã¹ã¯ãªããã®å®è¡ãå®äºããããšã確èªããå¿
èŠãããããã§ããåæ§ã«ãCSS ãèªã¿èŸŒã <link> ã¿ã°ã¯ãåŸè¿°ããããã«ã¬ã³ããªã³ã°ããããã³ã°ãšèŠãªãããŸãã
2. CSSOM æ§ç¯
ãã©ãŠã¶ã DOM ãäœæããããã« HTML ãè§£æããã®ãšåæ§ã«ãCSS ãè§£æã㊠CSS Object Model (CSSOM) ãäœæããŸããCSSOM ã¯ãHTML èŠçŽ ã«é©çšãããã¹ã¿ã€ã«ã衚ããŸããDOM ãšåæ§ã«ãCSSOM ãããªãŒæ§é ã§ããCSSOM ã¯ãCSS ã«ãŒã«ã察å¿ãã HTML èŠçŽ ã«ã©ã®ããã«ã¹ã¿ã€ã«ãé©çšãããããæ±ºå®ãããããéåžžã«éèŠã§ãã以äžã® CSS ãèããŠã¿ãŸãããã
h1 {
color: blue;
font-size: 2em;
}
p {
color: gray;
}
ãã©ãŠã¶ã¯ãã® CSS ãè§£æããCSS ã«ãŒã«ã察å¿ãã HTML èŠçŽ ã«ãããã³ã°ãã CSSOM ãäœæããŸãã CSSOM æ§ç¯ã¯ããŒãžã®ã¬ã³ããªã³ã°ã«çŽæ¥åœ±é¿ããŸããäžæ£ç¢ºãŸãã¯éå¹çç㪠CSS ã¯ãã¬ã³ããªã³ã°ã®é å»¶ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®äœäžã«ã€ãªããå¯èœæ§ããããŸããããšãã°ãCSS ã»ã¬ã¯ã¿ãŒã¯ããã©ãŠã¶ã®äœæ¥ãæå°éã«æããããã«ãã§ããã ãå ·äœçãã€å¹ççã§ããã¹ãã§ãã
ã¯ãªãã£ã«ã«ããããã³ã°ãªãœãŒã¹ïŒ CSSOM ã¯ã¬ã³ããªã³ã°ããããã³ã°ãªãœãŒã¹ã§ãããã©ãŠã¶ã¯ãCSSOM ãæ§ç¯ããããŸã§ããŒãžã®ã¬ã³ããªã³ã°ãéå§ã§ããŸãããããã¯ãCSS ã§å®çŸ©ãããã¹ã¿ã€ã«ã HTML èŠçŽ ã®è¡šç€ºæ¹æ³ã«åœ±é¿ããããã§ãããããã£ãŠããã©ãŠã¶ã¯ã¬ã³ããªã³ã°ã«é²ãåã« CSSOM ã®å®äºãåŸ
ã€å¿
èŠããããŸããããã¥ã¡ã³ãã® <head> å
ã®ã¹ã¿ã€ã«ã·ãŒãïŒ<link rel="stylesheet"> ã䜿çšïŒã¯ãéåžžã¬ã³ããªã³ã°ããããã¯ããŸãã
3. ã¬ã³ããŒããªãŒæ§ç¯
DOM ãš CSSOM ãæ§ç¯ããããšããã©ãŠã¶ã¯ããããçµã¿åãããŠã¬ã³ããŒããªãŒãäœæããŸããã¬ã³ããŒããªãŒã¯ãç»é¢ã«å®éã«è¡šç€ºãããèŠçŽ ã®ã¿ãå«ã DOM ã®èŠèŠç衚çŸã§ããé衚瀺ã®èŠçŽ ïŒäŸïŒdisplay: none; ã䜿çšïŒã¯ãã¬ã³ããŒããªãŒã«å«ãŸããŸãããã¬ã³ããŒããªãŒã¯ããŠãŒã¶ãŒãç»é¢äžã§å®éã«ç®ã«ãããã®ã衚ããŸããããã¯ã衚瀺å¯èœã§ã¹ã¿ã€ã«ãé©çšãããèŠçŽ ã®ã¿ãå«ããDOM ã®ããªãã³ã°ãããããŒãžã§ã³ã§ãã
ã¬ã³ããŒããªãŒã¯ãã³ã³ãã³ãïŒDOMïŒãšã¹ã¿ã€ã«ïŒCSSOMïŒãçµã¿åããããããŒãžã®æçµçãªèŠèŠæ§é ã衚ããŸãããã®ã¹ãããã¯ãå®éã®ã¬ã³ããªã³ã°ããã»ã¹ãžã®æºåãæŽãããããéåžžã«éèŠã§ãã
4. ã¬ã€ã¢ãŠã
ã¬ã€ã¢ãŠããã§ãŒãºã§ã¯ãã¬ã³ããŒããªãŒå ã®åèŠçŽ ã®æ£ç¢ºãªäœçœ®ãšãµã€ãºãèšç®ããŸãããã®ããã»ã¹ã¯ããªãããŒããšããŠãç¥ãããŠããŸãããã©ãŠã¶ã¯ãåèŠçŽ ãç»é¢äžã®ã©ãã«é 眮ãããã¹ããããããŠã©ãã ãã®ã¹ããŒã¹ãå ããã¹ãããæ±ºå®ããŸããã¬ã€ã¢ãŠããã§ãŒãºã¯ãé©çšããã CSS ã¹ã¿ã€ã«ã«å€§ãã圱é¿ãããŸããããŒãžã³ãããã£ã³ã°ãå¹ ãé«ããé 眮ãªã©ã®èŠå ã¯ãã¹ãŠãã¬ã€ã¢ãŠãèšç®ã«åœ¹å²ãæãããŸãããã®ãã§ãŒãºã¯ãç¹ã«è€éãªã¬ã€ã¢ãŠãã§ã¯èšç®è² è·ãé«ãã§ãã
ã¬ã€ã¢ãŠã㯠CRP ã«ãããéèŠãªã¹ãããã§ãããªããªããããŒãžäžã®èŠçŽ ã®ç©ºéçãªé çœ®ãæ±ºå®ããããã§ããå¹ççãªã¬ã€ã¢ãŠãããã»ã¹ã¯ãã¹ã ãŒãºã§å¿çæ§ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«äžå¯æ¬ ã§ããDOM ãŸã㯠CSSOM ã®å€æŽã¯ãããã©ãŒãã³ã¹ã®èгç¹ããã³ã¹ãã®ãããåã¬ã€ã¢ãŠããããªã¬ãŒããå¯èœæ§ããããŸãã
5. ãã€ã³ã
æçµã¹ãããã¯ãã€ã³ããã§ãŒãºã§ããããã§ãã©ãŠã¶ã¯ã¬ã³ããŒããªãŒãç»é¢äžã®å®éã®ãã¯ã»ã«ã«å€æããŸããããã«ã¯ãèŠçŽ ã®ã©ã¹ã¿ã©ã€ãºãšãæå®ãããã¹ã¿ã€ã«ãè²ããã¯ã¹ãã£ã®é©çšãå«ãŸããŸãããã€ã³ãããã»ã¹ã¯ãæçµçã«ãŠã§ãããŒãžããŠãŒã¶ãŒã«å¯èŠåãããã®ã§ãããã€ã³ãããç¹ã«è€éãªã°ã©ãã£ãã¯ãã¢ãã¡ãŒã·ã§ã³ã§ã¯ãèšç®è² è·ã®é«ãããã»ã¹ã§ãã
ãã€ã³ããã§ãŒãºã®åŸããŠãŒã¶ãŒã¯ã¬ã³ããªã³ã°ããããŠã§ãããŒãžã確èªã§ããŸããDOM ãŸã㯠CSSOM ã®åŸç¶ã®å€æŽã¯ãç»é¢äžã®èŠèŠç衚çŸãæŽæ°ãããªãã€ã³ããããªã¬ãŒããå¯èœæ§ããããŸããäžèŠãªãªãã€ã³ããæå°éã«æããããšã¯ãã¹ã ãŒãºã§å¿çæ§ã®é«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãç¶æããããã«éèŠã§ãã
ã¯ãªãã£ã«ã«ã¬ã³ããªã³ã°ãã¹ã®æé©å
ã¯ãªãã£ã«ã«ã¬ã³ããªã³ã°ãã¹ãçè§£ããã®ã§ããããæé©åããããã®ãã¯ããã¯ãæ¢ã£ãŠã¿ãŸãããã
1. ã¯ãªãã£ã«ã«ãªãœãŒã¹ã®æ°ãæå°éã«ãã
ãã©ãŠã¶ãããŠã³ããŒãããŠè§£æããå¿ èŠã®ããã¯ãªãã£ã«ã«ãªãœãŒã¹ïŒCSS ããã³ JavaScript ãã¡ã€ã«ïŒãå°ãªãã»ã©ãããŒãžã®ã¬ã³ããªã³ã°ã¯éããªããŸããã¯ãªãã£ã«ã«ãªãœãŒã¹ãæå°éã«æããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
- éã¯ãªãã£ã«ã« JavaScript ãé
å»¶ãããïŒ
<script>ã¿ã°ã«deferãŸãã¯async屿§ã䜿çšããŠãDOM æ§ç¯ããããã¯ããªãããã«ããŸãã - ã¯ãªãã£ã«ã« CSS ãã€ã³ã©ã€ã³åããïŒ ç»é¢äžéšïŒabove-the-foldïŒã®ã³ã³ãã³ãã®ã¬ã³ããªã³ã°ã«äžå¯æ¬ 㪠CSS ã«ãŒã«ãç¹å®ããHTML ããã¥ã¡ã³ãã®
<head>ã«çŽæ¥ã€ã³ã©ã€ã³åããŸããããã«ããããã©ãŠã¶ã¯åæã¬ã³ããªã³ã°ã®ããã«å€éš CSS ãã¡ã€ã«ãããŠã³ããŒãããå¿ èŠããªããªããŸãã - CSS ããã³ JavaScript ãã¡ã€ã«ãæå°åããïŒ äžèŠãªæåïŒç©ºçœãã³ã¡ã³ããªã©ïŒãåé€ããŠãCSS ããã³ JavaScript ãã¡ã€ã«ã®ãµã€ãºãçž®å°ããŸãã
- CSS ããã³ JavaScript ãã¡ã€ã«ãçµåããïŒ è€æ°ã® CSS ããã³ JavaScript ãã¡ã€ã«ã 1 ã€ã®ãã¡ã€ã«ã«çµåããŠãHTTP ãªã¯ãšã¹ãã®æ°ãæžãããŸãããã ããHTTP/2 ã§ã¯ããã«ããã¬ã¯ã·ã³ã°æ©èœã®åäžã«ããããã³ããªã³ã°ã®ã¡ãªããã¯ããã»ã©é¡èã§ã¯ãããŸããã
- æªäœ¿çšã® CSS ãåé€ããïŒ CSS ãåæãã䜿çšãããŠããªãã«ãŒã«ãç¹å®ããããã®ããŒã«ããããŸãããããã®ã«ãŒã«ãåé€ãããšãCSSOM ã®ãµã€ãºãçž®å°ãããŸãã
äŸïŒJavaScript ã®é å»¶ïŒïŒ
<script src="script.js" defer></script>
defer 屿§ã¯ããã©ãŠã¶ã« DOM æ§ç¯ããããã¯ããã«ã¹ã¯ãªãããããŠã³ããŒãããããã«æç€ºããŸããã¹ã¯ãªããã¯ãDOM ãå®å
šã«è§£æãããåŸã«å®è¡ãããŸãã
äŸïŒã¯ãªãã£ã«ã« CSS ã®ã€ã³ã©ã€ã³åïŒïŒ
<head>
<style>
/* ç»é¢äžéšã®ã³ã³ãã³ãã®ããã®ã¯ãªãã£ã«ã« CSS */
body { font-family: sans-serif; }
h1 { color: black; }
</style>
<link rel="stylesheet" href="style.css">
</head>
ãã®äŸã§ã¯ãbody ããã³ h1 èŠçŽ ã® CSS ã«ãŒã«ã¯ <head> ã«ã€ã³ã©ã€ã³åãããŠããŸããããã«ãããå€éšã¹ã¿ã€ã«ã·ãŒãïŒstyle.cssïŒãããŠã³ããŒããããåã§ãããã©ãŠã¶ã¯ç»é¢äžéšã®ã³ã³ãã³ããè¿
éã«ã¬ã³ããªã³ã°ã§ããŸãã
2. CSS ã®é ä¿¡ãæé©åãã
CSS ãé ä¿¡ããæ¹æ³ã¯ãCRP ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãããããã®æé©åãã¯ããã¯ãæ€èšããŠãã ããã
- ã¡ãã£ã¢ã¯ãšãªïŒ ã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãç¹å®ã®ããã€ã¹ãŸãã¯ç»é¢ãµã€ãºã«ã®ã¿ CSS ãé©çšããŸããããã«ããããã©ãŠã¶ãäžèŠãª CSS ãããŠã³ããŒãããã®ãé²ããŸãã
- å°å·çšã¹ã¿ã€ã«ã·ãŒãïŒ å°å·çšã¹ã¿ã€ã«ãå¥ã®ã¹ã¿ã€ã«ã·ãŒãã«åé¢ããå°å·æã®ã¿é©çšãããããã«ã¡ãã£ã¢ã¯ãšãªã䜿çšããŸããããã«ãããå°å·çšã¹ã¿ã€ã«ãç»é¢äžã®ã¬ã³ããªã³ã°ããããã¯ããã®ãé²ããŸãã
- æ¡ä»¶ä»ãèªã¿èŸŒã¿ïŒ ãã©ãŠã¶ã®æ©èœãŸãã¯ãŠãŒã¶ãŒã®å¥œã¿ã«åºã¥ã㊠CSS ãã¡ã€ã«ãæ¡ä»¶ä»ãã§èªã¿èŸŒã¿ãŸãããã㯠JavaScript ãŸãã¯ãµãŒããŒãµã€ãããžãã¯ã䜿çšããŠå®çŸã§ããŸãã
äŸïŒã¡ãã£ã¢ã¯ãšãªïŒïŒ
<link rel="stylesheet" href="style.css" media="screen">
<link rel="stylesheet" href="print.css" media="print">
ãã®äŸã§ã¯ãstyle.css ã¯ç»é¢ã«ã®ã¿é©çšãããprint.css ã¯å°å·æã®ã¿é©çšãããŸãã
3. JavaScript ã®å®è¡ãæé©åãã
JavaScript 㯠CRP ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸããç¹ã«ãDOM ãŸã㯠CSSOM ã倿Žããå Žåã§ããJavaScript ã®å®è¡ãæé©åããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
- JavaScript ãé
å»¶ãŸãã¯éåæåããïŒ åè¿°ã®ããã«ã
deferãŸãã¯async屿§ã䜿çšããŠãJavaScript ã DOM æ§ç¯ããããã¯ããªãããã«ããŸãã - JavaScript ã³ãŒããæé©åããïŒ DOM ã®æäœãèšç®ãæå°éã«æããå¹çç㪠JavaScript ã³ãŒããäœæããŸãã
- JavaScript ãé å»¶èªã¿èŸŒã¿ããïŒ JavaScript ã¯å¿ èŠãªãšãã«ã®ã¿èªã¿èŸŒã¿ãŸããããšãã°ãç»é¢äžéšã«ããèŠçŽ ã® JavaScript ãé å»¶èªã¿èŸŒã¿ã§ããŸãã
- Web WorkersïŒ èšç®è² è·ã®é«ã JavaScript ã¿ã¹ã¯ã Web Workers ã«ç§»åãããŠãã¡ã€ã³ã¹ã¬ããããããã¯ããªãããã«ããŸãã
äŸïŒéåæ JavaScriptïŒïŒ
<script src="analytics.js" async></script>
async 屿§ã¯ããã©ãŠã¶ã«ã¹ã¯ãªãããéåæã§ããŠã³ããŒãããå©çšå¯èœã«ãªã次第ããã«å®è¡ããããã«æç€ºããŸããDOM æ§ç¯ããããã¯ããŸãããdefer ãšã¯ç°ãªããasync ã§èªã¿èŸŒãŸããã¹ã¯ãªããã¯ãHTML ã§ã®åºçŸé åºãšã¯ç°ãªãé åºã§å®è¡ãããå¯èœæ§ããããŸãã
4. DOM ãæé©åãã
倧ãããŠè€é㪠DOM ã¯ãã¬ã³ããªã³ã°ããã»ã¹ãé ãããå¯èœæ§ããããŸããDOM ãæé©åããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
- DOM ãµã€ãºãçž®å°ããïŒ äžèŠãªèŠçŽ ã屿§ãåé€ããŠãDOM ãå¯èœãªéãå°ããä¿ã¡ãŸãã
- æ·±ã DOM ããªãŒãé¿ããïŒ ãã©ãŠã¶ã DOM ããã©ããŒã¹ããã®ãé£ãããããããæ·±ããã¹ãããã DOM æ§é ã®äœæãé¿ããŸãã
- ã»ãã³ãã£ã㯠HTML ã䜿çšããïŒ ã»ãã³ãã£ã㯠HTML èŠçŽ ïŒäŸïŒ
<article>ã<nav>ã<aside>ïŒã䜿çšããŠãHTML ããã¥ã¡ã³ãã«æ§é ãšæå³ãæäŸããŸããããã«ããããã©ãŠã¶ã¯ããŒãžãããå¹ççã«ã¬ã³ããªã³ã°ã§ããŸãã
5. ã¬ã€ã¢ãŠãã¹ã©ãã·ã³ã°ãåæžãã
ã¬ã€ã¢ãŠãã¹ã©ãã·ã³ã°ã¯ãJavaScript ã DOM ãç¹°ãè¿ãèªã¿æžããããã©ãŠã¶ã«è€æ°ã®ã¬ã€ã¢ãŠããšãã€ã³ããå®è¡ãããå Žåã«çºçããŸããããã«ãããããã©ãŒãã³ã¹ãå€§å¹ ã«äœäžããå¯èœæ§ããããŸããã¬ã€ã¢ãŠãã¹ã©ãã·ã³ã°ãåé¿ããã«ã¯ïŒ
- DOM 倿ŽããããåŠçããïŒ DOM 倿Žãã°ã«ãŒãåããåäžã®ãããã§é©çšããŸããããã«ãããã¬ã€ã¢ãŠããšãã€ã³ãã®åæ°ãæå°éã«æããããŸãã
- æžã蟌ã¿åã«ã¬ã€ã¢ãŠãããããã£ã®èªã¿åããé¿ããïŒ DOM ãžã®æžã蟌ã¿åã«ã¬ã€ã¢ãŠãããããã£ïŒäŸïŒ
offsetWidthãoffsetHeightïŒãèªã¿åãã®ãé¿ããŠãã ãããããã«ããããã©ãŠã¶ã«ã¬ã€ã¢ãŠãã®å®è¡ã匷å¶ããå¯èœæ§ããããŸãã - CSS ãã©ã³ã¹ãã©ãŒã ãšã¢ãã¡ãŒã·ã§ã³ãå©çšããïŒ JavaScript ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ããã CSS ãã©ã³ã¹ãã©ãŒã ãšã¢ãã¡ãŒã·ã§ã³ã䜿çšããŠãã ããããããã¯äžè¬çã«ããã©ãŒãã³ã¹ãé«ãã§ãããã©ã³ã¹ãã©ãŒã ãšã¢ãã¡ãŒã·ã§ã³ã¯ GPU ã䜿çšããããšãå€ãããããã®æäœã¿ã€ãã«æé©åãããŠããŸãã
6. ãã©ãŠã¶ãã£ãã·ã¥ã掻çšãã
ãã©ãŠã¶ãã£ãã·ã¥ã«ããããã©ãŠã¶ã¯ãªãœãŒã¹ïŒCSSãJavaScriptãç»åãªã©ïŒãããŒã«ã«ã«ä¿åã§ãããããåŸã§åããŠã³ããŒãããå¿ èŠããªããªããŸãããµãŒããŒãæ§æããŠããªãœãŒã¹ã«é©åãªãã£ãã·ã¥ããããŒãèšå®ããŠãã ããã
äŸïŒãã£ãã·ã¥ããããŒïŒïŒ
Cache-Control: public, max-age=31536000
ãã®ãã£ãã·ã¥ããããŒã¯ããã©ãŠã¶ã«ãªãœãŒã¹ã 1 幎éïŒ31536000 ç§ïŒãã£ãã·ã¥ããããã«æç€ºããŸããContent Delivery Network (CDN) ã䜿çšããããšãããã£ãã·ã¥ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸããCDN ã¯ã³ã³ãã³ããè€æ°ã®ãµãŒããŒã«åæ£ãããŠãŒã¶ãŒãå°ççã«è¿ããµãŒããŒãããªãœãŒã¹ãããŠã³ããŒãã§ããããã«ããŸãã
ã¯ãªãã£ã«ã«ã¬ã³ããªã³ã°ãã¹åæããŒã«
ã¯ãªãã£ã«ã«ã¬ã³ããªã³ã°ãã¹ãåæããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããã®ã«åœ¹ç«ã€ããŒã«ãããã€ããããŸãã
- Chrome DevToolsïŒ Chrome DevTools ã¯ãCRP ã®åã¹ãããã®ã¿ã€ãã³ã°ãå«ããã¬ã³ããªã³ã°ããã»ã¹ã«é¢ããè±å¯ãªæ å ±ãæäŸããŸããããã©ãŒãã³ã¹ããã«ã䜿çšããŠãããŒãžèªã¿èŸŒã¿ã®ã¿ã€ã ã©ã€ã³ãèšé²ããæé©åã®å¯Ÿè±¡ãç¹å®ããŸããã«ãã¬ããžã¿ãã¯ãæªäœ¿çšã® CSS ãš JavaScript ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- WebPageTestïŒ WebPageTest ã¯ããªãœãŒã¹ã®èªã¿èŸŒã¿ãèŠèŠåãããŠã©ãŒã¿ãŒãã©ãŒã«ãã£ãŒããå«ã詳现ãªããã©ãŒãã³ã¹ã¬ããŒããæäŸãã人æ°ã®ãªã³ã©ã€ã³ããŒã«ã§ãã
- LighthouseïŒ Lighthouse ã¯ããŠã§ãããŒãžã®å質ãåäžãããããã®ãªãŒãã³ãœãŒã¹ã®èªååããŒã«ã§ããããã©ãŒãã³ã¹ãã¢ã¯ã»ã·ããªãã£ãããã°ã¬ãã·ããŠã§ãã¢ããªãSEO ãªã©ã®ç£æ»ããããŸããChrome DevToolsãã³ãã³ãã©ã€ã³ããŸã㯠Node ã¢ãžã¥ãŒã«ããå®è¡ã§ããŸãã
äŸïŒChrome DevTools ã®äœ¿çšïŒïŒ
- Chrome DevTools ãéããŸãïŒããŒãžãå³ã¯ãªãã¯ããŠãæ€èšŒããéžæïŒã
- ãããã©ãŒãã³ã¹ãããã«ã«ç§»åããŸãã
- èšé²ãã¿ã³ïŒåã¢ã€ã³ã³ïŒãã¯ãªãã¯ããŠãããŒãžãåèªã¿èŸŒã¿ããŸãã
- ããŒãžãèªã¿èŸŒã¿å®äºããããèšé²ã忢ããŸãã
- ã¿ã€ã ã©ã€ã³ãåæããŠãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããŸãããèªã¿èŸŒã¿ãããã¹ã¯ãªããã£ã³ã°ãããã¬ã³ããªã³ã°ããããã€ã³ããã®ã»ã¯ã·ã§ã³ã«ç¹ã«æ³šæããŠãã ããã
å®éã®äŸãšã±ãŒã¹ã¹ã¿ãã£
ã¯ãªãã£ã«ã«ã¬ã³ããªã³ã°ãã¹ã®æé©åããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãã©ã®ããã«åäžããããã«ã€ããŠã®å®éã®äŸãããã€ãèŠãŠã¿ãŸãããã
- äŸ 1ïŒEã³ããŒã¹ãŠã§ããµã€ãïŒ Eã³ããŒã¹ãŠã§ããµã€ãã¯ãã¯ãªãã£ã«ã« CSS ã®ã€ã³ã©ã€ã³åãéã¯ãªãã£ã«ã« JavaScript ã®é å»¶ãç»åã®æé©åã«ãã CRP ãæé©åããŸãããããã«ãããããŒãžèªã¿èŸŒã¿æéã 40% åæžãããã³ã³ããŒãžã§ã³çã 20% å¢å ããŸããã
- äŸ 2ïŒãã¥ãŒã¹ãŠã§ããµã€ãïŒ ãã¥ãŒã¹ãŠã§ããµã€ãã¯ãDOM ãµã€ãºã®çž®å°ãCSS ã»ã¬ã¯ã¿ãŒã®æé©åããã©ãŠã¶ãã£ãã·ã¥ã®æŽ»çšã«ãã CRP ãæ¹åããŸãããããã«ãããé¢è±çã 30% æžå°ããåºååçã 15% å¢å ããŸããã
- äŸ 3ïŒã°ããŒãã«æ è¡ãã©ãããã©ãŒã ïŒ äžçäžã®ãŠãŒã¶ãŒã«ãµãŒãã¹ãæäŸããã°ããŒãã«æ è¡ãã©ãããã©ãŒã ã¯ãCDN ã®å°å ¥ãšãããŸããŸãªããã€ã¹ã¿ã€ãããã³ãããã¯ãŒã¯æ¡ä»¶åãã®ç»åæé©åã«ãããå€§å¹ ãªæ¹åãéæããŸããããŸããé »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ããã£ãã·ã¥ããããã«ãµãŒãã¹ã¯ãŒã«ãŒã䜿çšãããªãã©ã€ã³ã¢ã¯ã»ã¹ãšåŸç¶ã®ããéãèªã¿èŸŒã¿ãå¯èœã«ããŸãããããã«ãããããŸããŸãªå°åãã€ã³ã¿ãŒãããé床ã§ãããäžè²«ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸããŸããã
ã°ããŒãã«ãªèæ ®äºé
CRP ãæé©åããéã«ã¯ãã°ããŒãã«ãªã³ã³ããã¹ããèæ ®ããããšãéèŠã§ããäžçã®ããŸããŸãªå°åã®ãŠãŒã¶ãŒã¯ãç°ãªãã€ã³ã¿ãŒãããé床ãããã€ã¹æ©èœããããã¯ãŒã¯æ¡ä»¶ãæã€å¯èœæ§ããããŸããã°ããŒãã«ãªèæ ®äºé ãããã€ã瀺ããŸãã
- ãããã¯ãŒã¯é å»¶ïŒ ãããã¯ãŒã¯é å»¶ã¯ãç¹ã«é éå°ã®ãŠãŒã¶ãŒãäœéã®ã€ã³ã¿ãŒãããæ¥ç¶ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠãããŒãžã®èªã¿èŸŒã¿æéã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸããCDN ã䜿çšããŠã³ã³ãã³ãããŠãŒã¶ãŒã®è¿ãã«é ä¿¡ããé å»¶ãåæžããŸãã
- ããã€ã¹æ©èœïŒ ã¢ãã€ã«ããã€ã¹ãã¿ãã¬ããããã¹ã¯ããããªã©ã®ããŸããŸãªããã€ã¹æ©èœã«åãããŠãŠã§ããµã€ããæé©åããŸããã¬ã¹ãã³ã·ããã¶ã€ã³æè¡ã䜿çšããŠããŠã§ããµã€ããããŸããŸãªç»é¢ãµã€ãºãè§£å床ã«é©å¿ãããŸãã
- ãããã¯ãŒã¯æ¡ä»¶ïŒ 2Gã3Gã4G ãªã©ã®ãŠãŒã¶ãŒãäœéšããå¯èœæ§ã®ããããŸããŸãªãããã¯ãŒã¯æ¡ä»¶ãèæ ®ããŸããã¢ãããã£ãç»åèªã¿èŸŒã¿ãããŒã¿å§çž®ãªã©ã®æè¡ã䜿çšããŠãäœéã®ãããã¯ãŒã¯æ¥ç¶ã«åãããŠãŠã§ããµã€ããæé©åããŸãã
- åœéå (i18n)ïŒ å€èšèªãŠã§ããµã€ããæ±ãå ŽåãCSS ãš JavaScript ãããŸããŸãªæåã»ãããããã¹ãæ¹åãé©åã«åŠçã§ããããã«åœéåãããŠããããšã確èªããŸãã
- ã¢ã¯ã»ã·ããªã㣠(a11y)ïŒ ãŠã§ããµã€ããã¢ã¯ã»ã·ããªãã£ã«å¯Ÿå¿ããŠããããšã確èªããé害ãæã€äººã ãå©çšã§ããããã«ããŸããããã«ã¯ãç»åã®ä»£æ¿ããã¹ãã®æäŸãã»ãã³ãã£ã㯠HTML ã®äœ¿çšããŠã§ããµã€ããããŒããŒãã§ã¢ã¯ã»ã¹å¯èœã§ããããšã確èªããããšãå«ãŸããŸãã
çµè«
ã¯ãªãã£ã«ã«ã¬ã³ããªã³ã°ãã¹ã®æé©åã¯ãè¿ éã§é åçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«äžå¯æ¬ ã§ããã¯ãªãã£ã«ã«ãªãœãŒã¹ã®æå°åãCSS é ä¿¡ã®æé©åãJavaScript å®è¡ã®æé©åãDOM ã®æé©åãã¬ã€ã¢ãŠãã¹ã©ãã·ã³ã°ã®åæžããã©ãŠã¶ãã£ãã·ã¥ã®æŽ»çšã«ããããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸããå©çšå¯èœãªããŒã«ã䜿çšã㊠CRP ãåæããæé©åã®å¯Ÿè±¡ãç¹å®ããããšãå¿ããªãã§ãã ããããããã®ã¹ããããèžãããšã§ããŠã§ããµã€ããè¿ éã«èªã¿èŸŒãŸããäžçäžã®ãŠãŒã¶ãŒã«è¯å®çãªãšã¯ã¹ããªãšã³ã¹ãæäŸããããšãä¿èšŒã§ããŸããã€ã³ã¿ãŒãããã¯ãŸããŸãã°ããŒãã«åããŠãããé«éã§ã¢ã¯ã»ã¹ãããããŠã§ããµã€ãã¯ããã¯ããã¹ããã©ã¯ãã£ã¹ã§ã¯ãªãã倿§ãªãªãŒãã£ãšã³ã¹ã«ãªãŒãããããã®å¿ èŠäžå¯æ¬ ãªãã®ãšãªã£ãŠããŸãã